﻿namespace GGF
{
    using API;

    namespace Utility
    {
        using System;
        using System.Collections.Generic;
        using System.Text;
        using System.IO;
        using System.Xml;

        /// <summary>
        /// Interface that is intended to implement parsing of a specific
        /// format of data returned by gubb API and passed to (and populated
        /// by) a gResponse object (via its constructor).
        /// </summary>
        public interface IStreamHelper
        {
            /// <summary>
            /// Method to return type of data helper operates on (as a string).
            /// </summary>
            string helperType { get; }

            /// <summary>
            /// Method to process stream data after proper reader objects instantiated.
            /// </summary>
            /// <param name="foo">An Object that could be anything but was intended
            /// to be a casted reader for a specific format, created
            /// from a <see cref="System.IO.StreamReader"/> in the
            /// the <c>formatSpecificHelper</c> method.
            /// </param>
            /// <param name="bar">An int that could be anything but was intended
            /// to explicitly flag item or list processing
            /// </param>
            void process(Object foo, int bar);

            /// <summary>
            /// Method meant to receive raw stream from a <see cref="GGF.REST.gResponse"/> and create
            /// proper reader objects.
            /// </summary>
            /// <param name="foo">A <see cref="System.IO.StreamReader"/> that could
            /// be for anything but was intended to represent data returned
            /// from gubb API.
            /// </param>
            void formatSpecificHelper(StreamReader foo);
        }

    }
}
